package acm.pta13;

import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;

public class 乘法口诀数列 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a1 = sc.nextInt();
        int a2 = sc.nextInt();
        int n = sc.nextInt();
        if (n == 1) {
            System.out.println(a1);
            return;
        }
        int[] arr = new int[n];
        arr[0] = a1;
        arr[1] = a2;
        int i = 0;
        int index = 2;
        while (index < n) {
            index = fun(arr, i, i + 1, index);
            i++;
        }
        StringBuilder res = new StringBuilder();
        Arrays.stream(arr).forEach(value -> res.append(value).append(" "));
        res.deleteCharAt(res.length() - 1);
        System.out.println(res.toString());
    }

    public static int fun(int[] arr, int i, int j, int index) {
        int num = arr[i] * arr[j];
        if (num == 0) {
            return index + 1;
        }
        Stack<Integer> stack = new Stack<>();
        while (num != 0) {
            stack.push(num % 10);
            num /= 10;
        }
        while (!stack.isEmpty() && index < arr.length) {
            arr[index++] = stack.pop();
        }
        return index;
    }


    public static int[] issue(int a1, int a2, int n) {
        if (n == 1) {
            System.out.println(a1);
            return new int[]{a1};
        }
        int[] arr = new int[n];
        arr[0] = a1;
        arr[1] = a2;
        int i = 0;
        int index = 2;
        if (a1 != 0 && a2 != 0) {
            try {
                while (index < n) {
                    index = fun(arr, i, i + 1, index);
                    i++;
                }
            } catch (Exception ignored) {
            }
        }
        return arr;
    }
//
//    static {
//        Arrays.stream(ans(6, 5, 8)).forEach(System.out::print);
//        int count = 0;
//        while (count-- > 0) {
//            int a1 = (int) (Math.random() * 10);
//            int a2 = (int) (Math.random() * 10);
//            int n = (int) (Math.random() * 10 + 1);
//            int[] ans = ans(a1, a2, n);
//            int[] issue = issue(a1, a2, n);
//            if (!Arrays.equals(ans, issue)) {
//                System.out.println("error");
//                System.out.println(a1 + " " + a2 + " " + n);
//                System.out.println(Arrays.toString(ans));
//                System.out.println(Arrays.toString(issue));
//                break;
//            }
//        }
//    }

//    public static int[] ans(int a1, int a2, int n) {
//        Scanner scanner = new Scanner(System.in);
//        ArrayList<Integer> l = new ArrayList<>();
//        l.add(a1);
//        l.add(a2);
//        int i = 0;
//        int j = 1;
//        while (l.size() <= n) {
//            int b = l.get(i) * l.get(j);
//            if (b < 10) {
//                l.add(b);
//                i++;
//                j++;
//            } else {
//                int b1 = b / 10;
//                int b2 = b % 10;
//                l.add(b1);
//                l.add(b2);
//                i++;
//                j++;
//            }
//        }
//        int[] arr = new int[n];
//        for (int k = 0; k < arr.length; k++) {
//            arr[k] = l.get(k);
//        }
//        return arr;
//    }
}
